package main

import (
	"fmt"
	"time"
)

func worker(id int,c chan int)  {
	for n := range c{
		fmt.Printf("worker %d ,receive  %d \n", id, n)

	}
}
func createWorker(id int) chan<- int {
	c := make(chan int)
	go worker(id,c)
	return c
}

func bufferChannel ()  {
	c := make(chan int,3)
	go worker(1,c)
	c <- 'q'
	c <- 'b'
	c <- 'c'
	c <- 'd'
}
func channelClose()  {
	c := make(chan int,3)
	go worker(1,c)
	c <- 'q'
	c <- 'b'
	c <- 'c'
	c <- 'd'
	close(c)
	time.Sleep(time.Millisecond)
}
//func worker(id int,c chan  int ) {
//	for  {
//		//fmt.Printf("worker %d ,receive  %d",id,<-c)
//		fmt.Printf("worker %d ,receive  %c \n",id,<-c)
//	}
//}
func chanDemo() {
	var channels [10] chan <-int
	for i := 0; i < 10; i++ {
		channels[i] = createWorker(i)
	}
	for i := 0; i < 10; i++ {
		channels[i] <- 'a' + i
	}
	for i := 0; i < 10; i++ {
		channels[i] <- 'A' + i
	}

	time.Sleep(time.Microsecond)
}
func main() {
	//chanDemo()
	//bufferChannel()
	channelClose()

}
